/*
 * GameControl.hh
 *
 *  Created on: Mar 6, 2012
 *   Author: Muhammad Zohaib Hassan
 *    Student Number : 223994
 *  	Description : GameControl Class which is the main Control Unit of the Game . All methods and data elements
 *  	are declared here.
 */


#include<list>
#include"Question.hh"

#ifndef GAMECONTROL_HH_
#define GAMECONTROL_HH_

// Game Control
class GameControl

{
private:

  list<Question> Questions;

  list<Question> Generated_Question;

  list<int> Question_Numbers;

  string Search;

  // Get Question From USER

  Question Get_Question_From_Console();

  // PRINT Functions

  void Submenu_FOR_Print();

  void Print_All_Questions();

  void Print_A_Question();

  void Print_by_Difficulty_LEVEL();

  // SELECT sub Functions

  void Submenu_FOR_Select();		// SUBMENU for Select

  void Edit_Selected_Question(unsigned int Question_Number);

  void Remove_Selected_Question(unsigned int Question_Number);

  Question Filter_Question(int LEVEL);  // Filter Question of Difficulty Level From Questions LIST

  // SEARCH sub Functions

  void submenu_FOR_search();		// SUBMENU for Search

  int Question_Number_Validity();	// Check if user selects correct Question & Returns Question Number Selected

  int Find_Questions();

public:

  void Print_Game_Menu();

  void Add_New_Question();		// Adds a Question to Questions LIST

  void Search_Questions();

  void Edit_Question();

  void Select(char* FileName);

  void Print();

  void Generate_Question_Set();

  void Save_Questions_To_File(char* FileName);

  void Print_Generated_Question_Set();

  void Read_Questions(char* FileName);

  int List_Size();		// To find out total Number of Questions availble


};


#endif /* GAMECONTROL_HH_ */
